package br.com.sgpv2.entity.contribuicaoprevidenciaria;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import com.sun.istack.internal.NotNull;

/**
 * Representa uma entidade Contribuição Previdenci�ria no sistema.
 */
@Entity
@Table(name = "cpr_contribuicao_previdenciaria")
@SequenceGenerator(name = "sequenceContribuicaoPrevidenciaria", sequenceName = "cpr_contribuicao_previdenciaria_cpr_id_seq")
public class ContribuicaoPrevidenciaria implements Serializable {

	private int id;
	private String mes;
	private String ano;
	private BigDecimal valorInicial;
	private BigDecimal valorFinal;
	private BigDecimal aliquota;
	private BigDecimal aliquotaImpostoRenda;

	/**
	 * Recupera o valor do ID da entidade.
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "cpr_id", nullable = false)
	public int getId() {
		return id;
	}

	/**
	 * Configura o valor do ID da entidade.
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * Recupera o mês da contribuição.
	 */
	@Column(name = "cpr_mes")
	@NotNull
	public String getMes() {
		return mes;
	}

	/**
	 * Configura o mês da contribuição.
	 */
	public void setMes(String mes) {
		this.mes = mes;
	}

	/**
	 * Recupera o ano da contribuição.
	 */
	@Column(name = "cpr_ano")
	@NotNull
	public String getAno() {
		return ano;
	}

	/**
	 * Configura o ano da contribuição.
	 */
	public void setAno(String ano) {
		this.ano = ano;
	}

	/**
	 * Recupera o valor inicial da contribuição.
	 */
	@Column(name = "cpr_valor_inicial")
	@NotNull
	public BigDecimal getValorInicial() {
		if(valorInicial!=null){
			valorInicial = valorInicial.setScale(2, RoundingMode.HALF_UP);
		}
		return valorInicial;
	}

	/**
	 * Configura o valor inicial da contribuição.
	 */
	public void setValorInicial(BigDecimal valorInicial) {
		this.valorInicial = valorInicial;
	}

	/**
	 * Recupera o valor final da contribuição.
	 */
	@Column(name = "cpr_valor_final")
	@NotNull
	public BigDecimal getValorFinal() {
		if(valorFinal!= null){
			valorFinal = valorFinal.setScale(2, RoundingMode.HALF_UP);
		}
		return valorFinal;
	}

	/**
	 * Configura o valor final da contribuição.
	 */
	public void setValorFinal(BigDecimal valorFinal) {
		this.valorFinal = valorFinal;
	}

	/**
	 * Recupera o valor da aliquota.
	 */
	@Column(name = "cpr_aliquota")
	@NotNull
	public BigDecimal getAliquota() {
		if (aliquota!= null){
			aliquota = aliquota.setScale(2, RoundingMode.HALF_UP);
		}
		return aliquota;
	}

	/**
	 * Configura o valor da aliquota.
	 */
	public void setAliquota(BigDecimal aliquota) {
		this.aliquota = aliquota;
	}

	/**
	 * Recupera o valor da aliquota do imposto de renda.
	 */
	@Column(name = "cpr_aliquota_imposto_renda")
	@NotNull
	public BigDecimal getAliquotaImpostoRenda() {
		if(aliquotaImpostoRenda!= null){
			aliquotaImpostoRenda = aliquotaImpostoRenda.setScale(2,
					RoundingMode.HALF_UP);
		}
		return aliquotaImpostoRenda;
	}

	/**
	 * Configura o valor da aliquota do imposto de renda.
	 */
	public void setAliquotaImpostoRenda(BigDecimal aliquotaImpostoRenda) {
		this.aliquotaImpostoRenda = aliquotaImpostoRenda;
	}

}
